home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / tools / lu62 / debug / ini.c < prev    next >
C/C++ Source or Header  |  1996-07-10  |  5KB  |  199 lines

  1. /*
  2.  *  CopyRight 1995. Nicholas Poljakov all rights reserved.
  3.  */
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <memory.h>
  7. #include <stdlib.h>
  8. #include <fcntl.h>
  9. #include <io.h>
  10. #include <dos.h>
  11. #include <conio.h>
  12. #include <sys\types.h>
  13. #include <sys\stat.h>
  14.  
  15. #define MAX_FRAME 31
  16. #define F1 59
  17. #define F2 60
  18. #define F3 61
  19. #define F4 62
  20. #define F5 63
  21. #define F6 64
  22. #define F7 65
  23. #define F8 66
  24. #define F9 67
  25. #define F10 68
  26.  
  27. extern char *vid_mem;
  28. extern char *sv;
  29. extern int fd_ini;
  30.  
  31. extern struct APL_PARM{
  32.        int status;  /* 0-start aplmain,1-start transaction,2-dos shell */
  33.        char p[80];  /* string for system(p) */
  34.        char args[64];/* string of arguments */
  35.        int rc;      /* aplmain return code */
  36.        char dir[60];/* directory name for aplmain */
  37.        int drlen;   /* directory name length */
  38.        void *tpe;   /* entry of exit program */
  39.        char pgm_state;
  40. }*p_aparm;
  41. extern short cur_ln;
  42. extern struct menu_frame {
  43.     int startx, endx, starty, endy;
  44.     unsigned char *p;
  45.     char **menu;
  46.     char *keys;
  47.     int border;
  48.     int count;
  49.     unsigned char attrib;
  50.     int active;
  51.     int curx, cury;
  52.     char *header;
  53.     unsigned char shd;
  54.     } frame[MAX_FRAME];
  55.  
  56. char lu_name[9];
  57. char mode_name[9];
  58. int p_lu_num;   /* number of LU - partners */
  59.  
  60. struct lctl {
  61.     char lu_name[8];
  62.     char mode_name[8];
  63.     int lu_num;
  64.     short cur_ln;
  65. } *lctl;
  66. struct part {   /* partner structure */
  67.           char   plu[8] ;             /* str plu_name        */
  68.           int psl;                    /* str plu_s_limit     */
  69.           char   mode_name[8] ;       /* str mode_name       */
  70.           int max_ru_size;            /* str ru_h_size       */
  71.           int pacing;                 /* str =               */
  72.           unsigned char lu_type;
  73. } pstr[4];
  74. #define L_SIZ  sizeof(struct lctl) + (sizeof(struct part) * 4)
  75. #define L_PSTR  sizeof(struct part) * 4
  76.  
  77. int set0(char *p, int lt);
  78.  
  79. set_ini()
  80. {
  81.     int i;
  82.     unsigned ch;
  83.     char buff[L_SIZ];
  84.     char *p;
  85.     char full[80];
  86.  
  87.     strcpy(full,p_aparm -> dir);
  88.     full[p_aparm -> drlen] = 0x5c;
  89.     full[p_aparm -> drlen+1] = 0x00;
  90.     strcat(full,"apl.ini");
  91.     if ((fd_ini = open(full, (O_RDWR | O_BINARY))) != -1) {
  92.         if ((i = read(fd_ini, buff, L_SIZ)) < 0) {
  93.             return 0;
  94.     }
  95.         if (i < L_SIZ) {
  96.             return 0;
  97.         }
  98.         lctl = &buff;
  99.  
  100.     memcpy(lu_name, lctl -> lu_name, 8);
  101.     memcpy(mode_name, lctl -> mode_name, 8);
  102.     p_lu_num = lctl -> lu_num;
  103.     cur_ln = lctl -> cur_ln;
  104.  
  105.         p = &buff;
  106.         p += sizeof(struct lctl);
  107.     memcpy(&pstr, p, L_PSTR);
  108.  
  109.         if ( p_aparm -> rc != 0 )
  110.             return 0;
  111.  
  112.     showp(0);
  113.         window(23);
  114.     window_xy(23, 0, 3);
  115.         frame[23].attrib = 0x7f;
  116.     window_puts(23, "Are you sure you want this configuration ? [Y]");
  117.         frame[23].attrib = 0x70;
  118.     Retry:
  119.     window_xy(23, 0, 47);
  120.         ch = getch();
  121.         if (ch == 0) {
  122.                 ch = getch();
  123.                 if (ch == F1) {
  124.                       help("1   ");
  125.                 }
  126.         }
  127.         ch &= 0x00ff;
  128.         if ((ch == 'y')||(ch == 'Y')) {
  129.              goto IniExit;
  130.         }
  131.         if ((ch == 'n')||(ch == 'N')) {
  132.              p_lu_num = 0;
  133.              lu_name[0] = 0x00;
  134.              mode_name[0] = 0x00;
  135.              set0(&pstr, L_PSTR);
  136.              p_lu_num = 0;
  137.              goto IniExit;
  138.         }
  139.         goto Retry;
  140.     }
  141.     else  {
  142.              fd_ini = creat(full, S_IWRITE);
  143.              return 0;
  144.           }
  145.  IniExit:
  146.     deactivate(23);
  147.     deactivate(22);
  148.     return 0;
  149. }
  150.  
  151. save_ini()
  152. {
  153.     int i;
  154.     char buff[L_SIZ];
  155.     char *p;
  156.  
  157.     if (fd_ini != -1) {
  158.      i = lseek(fd_ini, (long)0,SEEK_SET);
  159.  
  160.          lctl = &buff;
  161.  
  162.      memcpy(lctl -> lu_name, lu_name, 8);
  163.      memcpy(lctl -> mode_name, mode_name, 8);
  164.      lctl -> lu_num = p_lu_num;
  165.      lctl -> cur_ln = cur_ln;
  166.  
  167.          p = &buff;
  168.          p += sizeof(struct lctl);
  169.      memcpy(p, &pstr, L_PSTR);
  170.      write(fd_ini, &buff, L_SIZ);
  171.          close(fd_ini);
  172.     }
  173.     return 0;
  174. }
  175. set0(p, lt)
  176. char *p;
  177. int lt;
  178. {
  179.         char _near *tp1;
  180.     char _near *tp2;
  181.     unsigned int l;
  182.  
  183.     l = lt;
  184.         tp1 = FP_SEG( p );
  185.         tp2 = FP_OFF( p );
  186.         _asm
  187.             {
  188.                 push di
  189.                 mov  ax, word ptr tp1[0]
  190.                 mov  es, ax
  191.                 mov  di, word ptr tp2[0]
  192.         mov  cx, word ptr l[0]
  193.                 mov  al, 0
  194.                 cld
  195.                 rep stosb
  196.                 pop  di
  197.             }
  198. }
  199.